package com.sky.service;

import java.util.List;
import java.util.Map;
import cn.mybatis.mp.core.mybatis.mapper.context.Pager;
import com.sky.vo.UserCollectionVO;
import com.sky.entity.Usercollections;

/**
 * @author majun
 * @package com.sky.service
 * @date 2025/1/1 15:28
 */

public interface UsercollectionsService {

    /**
     * 检查图书是否已收藏
     * @param bookId 图书ID
     * @return "1" 表示已收藏，"0" 表示未收藏
     */
    String getBookCheckIsFavorite(Integer bookId);

    /**
     * 添加收藏
     * @param userId 用户ID
     * @param bookId 图书ID
     */
    void addFavorite(Integer userId, Integer bookId);

    /**
     * 取消收藏
     * @param userId 用户ID
     * @param bookId 图书ID
     */
    void cancelFavorite(Integer userId, Integer bookId);

    /**
     * 获取图书的收藏数量
     * @param bookId 图书ID
     * @return 收藏数量
     */
    Long getCollectionCount(Integer bookId);

    /**
     * 批量获取图书的收藏数量
     * @param bookIds 图书ID列表
     * @return 图书ID和收藏数量的映射
     */
    Map<Integer, Long> getCollectionCounts(List<Integer> bookIds);

    /**
     * 分页获取用户收藏列表（包含图书详细信息）
     * @param userId 用户ID
     * @param page 页码
     * @param pageSize 每页数量
     * @return 分页后的收藏列表（包含图书详细信息）
     */
    Pager<UserCollectionVO> getUserCollectionsByPage(Integer userId, Integer page, Integer pageSize);

}
